package com.example.cloud.lijianzuul.filter;

import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import lombok.extern.java.Log;
import org.springframework.stereotype.Component;

import javax.servlet.http.HttpServletRequest;

/**
 * @author lj02
 * @desc
 * @date 2018/6/14
 */
@Log
@Component
public class AuthTokenFilter extends ZuulFilter {

    /**
     * @see com.netflix.zuul.http.ZuulServlet
     * @see com.netflix.zuul.filters.ZuulServletFilter
     * @return
     */
    @Override
    public String filterType() {
        return "pre";
        //PRE过滤器: 在请求被路由之前调用, 可用来实现身份验证、在集群中选择请求的微服务、记录调试信息等;
        //ROUTING过滤器: 在路由请求时候被调用;
        //POST过滤器: 在路由到微服务以后执行, 可用来为响应添加标准的HTTP Header、收集统计信息和指标、将响应从微服务发送给客户端等;
        //ERROR过滤器: 在处理请求过程时发生错误时被调用。
    }

    /**
     * 用来指示执行的顺序，值越小就会越早执行;
     *
     * @return
     */
    @Override
    public int filterOrder() {
        return 0;
    }

    @Override
    public boolean shouldFilter() {
        return 1 > 0;
    }

    @Override
    public Object run() {
        RequestContext ctx = RequestContext.getCurrentContext();
        HttpServletRequest request = ctx.getRequest();
        log.info("正在执行token 验证，看你不爽我就不让你通过");
        return null;
    }
}
